import Vue from 'vue' //引入 Vue
import Vuex from 'vuex' //引入 Vuex
import members from './modules/members' //引入 members module
import catalog from './modules/catalog'
import course from './modules/course'
import article from './modules/article'
import chapter from './modules/chapter'
import questiontype from './modules/questiontype'

Vue.use(Vuex)
const jwt  = require('jsonwebtoken');
const store = new Vuex.Store({

    state: {
        //登录成功后的用户状态对象，简单说就是登录成功后的用户对象。
        //先去localStorage中获取登录用户数据，如果没有取到则赋值为null
        loginUserInfo: JSON.parse(localStorage.getItem("loginUserInfo")) || null,
        //登录时生成验证码使用的token
        loginToken: jwt.sign(new Date().toUTCString(),'\'www.simoniu.com\'login'),
        //注册时发送验证码的token
        regToken: jwt.sign(new Date().toUTCString(),'\'www.simoniu.com\'reg'),
        currentCatalog:''
    },
    getters: {
        //判断用户是否处于登录状态的变量值isLogin
        isLogin(state) {
            //不为null说明登录了。
            return state.loginUserInfo !== null;
        }
    },
    mutations: {
        setLoginUserInfo(state, value) {
            //将传递的数据先保存到localStorage中
            if (value != '') {
                localStorage.setItem('loginUserInfo', JSON.stringify(value));
                // 之后才是修改state中的状态
                state.loginUserInfo = value;
            } else {
                //执行用户注销时，在localStorage中删除'loginUserInfo'
                localStorage.removeItem('loginUserInfo');
                state.loginUserInfo = null;
            }
        },

        setCurrentCatalog(state,value){
            state.currentCatalog = value;
        }
    },
    modules: {
        members, //使用 members.js.中的 action
        catalog,
        course,
        article,
        chapter,
        questiontype
    }
})

export default store